Real-time fluid modeling in video games, training and interactive media is an area of great interest. One important part of fluid modeling involves providing a real-time fluid system for computer graphics applications to model air flow, dust, leaves, texture sprites, volumetric smoke densities, magical effects and explosions, for example. Fluid simulations are very computationally extensive and thus have so far proved to be impractical for real-time computer graphics applications.
Modern online simulations used for visual effects use a real-time computational environment. Conventional applications in video games apply animated textures to objects in a scene.
Treuille, A. et al. “Model Reduction for Real-time Fluids”, ACM 0730-0301/06/0700-0826: 826-834 (Treuille) use an accurate off-line solver to produce a set of high-resolution fluid simulations representative of expected object behavior. The velocity fields are computed using a full-dimensional fluid simulation model. A set of forces is determined at the surface of an object to move the object in space and time. The principal components analysis method of James, D. L. et al. “Precomputing Interactive Dynamic Deformable Scenes”, ACM Transactions on Graphics 22, 3 (July), pages 879-887 (James) is used to reduce the dimensionality of both global velocity fields and object-specific velocity fields. Acceptable runtime speeds of 30 to 588 frames per second are achieved in four examples disclosed in the Treuille et al. reference. The speed comes at the cost of accuracy, generality, and increased memory requirements. For instance, rendering a model with 256×64×128 Voxels requires in excess of 256 MB of buffer memory in a graphics card. Such a requirement makes it impossible to implement the method of Treuille et al. in a video game engine such as an XBOX or Sony's PS3 (PlayStation 3).
Bridson, R. et al. “Curl-Noise for Procedural Fluid Flow”, International Conference on Computer Graphics and Interactive techniques, 2007, ISSN: 0730-0301 (Bridson) discloses a method in which the curl of Perlin noise as disclosed in Perlin, K. “An Image Synthesizer”, Proceedings of the ACM SIGGRAPH 1985, pages 287-296 is used to make a procedural fluid flow algorithm that can be rapidly queried any place in a modeled space that does not penetrate object boundaries. In the Bridson reference the method disclosed by Patel, M. et al. “Simple Divergence-Free Fields for Artistic Simulation”, Journal of graphics tools Vol. 10, No. 4, pages 49-60 is extended to handle arbitrary solid boundaries and to avoid periodic dead spots where the fluid velocity becomes zero. To maintain the incompressibility property of low-speed fluid flow, a vector curl of a three-dimensional potential field {right arrow over (ψ)}=(ψx, ψy, ψz) is computed. The curl of this vector field ∇×{right arrow over (ψ)} gives a velocity field
            v      →        ⁡          (              x        ,        y        ,        z            )        =            (                                                  ∂                              ψ                z                                                    ∂              y                                -                                    ∂                              ψ                y                                                    ∂              z                                      ,                                            ∂                              ψ                x                                                    ∂              z                                -                                    ∂                              ψ                z                                                    ∂              x                                      ,                                            ∂                              ψ                y                                                    ∂              x                                -                                    ∂                              ψ                x                                                    ∂              y                                          )        .  Their basic potential is simply three uncorrelated noise functions, each of which is determined using Perlin noise. To model realistic turbulence, several octaves of Perlin noise are combined with the amplitude of noise decreasing for higher octaves. This results in smaller-scale vortices having smaller wind speeds than those of the larger vortices. Penetration of fluid in modeled objects is avoided by ramping down the velocity flow normal to the surfaces of modeled objects. However, this approach requires significant user tuning in the modeled space to provide corrections in the velocity field downstream of embedded objects. These required adjustments render this method unsuitable for use in a real-time simulation environment.
In the movie industry, non-real-time simulations have been used to provide very realistic effects. Feldman et al. “Animating Suspended Particle Explosions”, Proceedings of the ACM SIGGRAPH, 2003, pages 708-715 disclose a method for animating suspended particle explosions. A stable incompressible fluid model is used to model the motion of air and hot gases. A divergence field of the fluid is adjusted directly to model detonations and the expansion of combustion products. The motion of particulate fuel and soot is tracked by advecting particles embedded in the fluid using a velocity field. Their model uses roughly 6 seconds of computing time and 56 seconds of rendering time per frame displayed. This is a factor of 200 to 2000 times too slow for real-time applications.
Feldman, B. et al. “Animating Gases with Hybrid Meshes”, Proceedings of the ACM SIGGRAPH 2005 disclose a method of hybridizing standard hexahedral meshes with tetrahedral meshes to animate gases. This hybrid method offers accuracy near obstacles and efficiency in open regions in a uniform manner. They use semi-Langrangian integration of the fluid equations to track fluid motion in modeled spaces. At high resolution, this method can produce visually excellent results, using perhaps 120,000 tetrahedra and hexahedra to provide a mesh for modeling a scene. An optimization is performed for fast evaluation using a known technique, where a least-squares interpolation is performed to estimate velocities at all vertices of the tetrahedral and hybrid portions of the mesh. However, this method requires integrating the equations of motion directly, which results in a model that is unsuitable for real-time modeling and takes on the order of 20 seconds of computing time to render each frame. This is on the order of 600 times too slow for on-line simulation purposes.
Selle et al. “A Vortex Particle Method for Smoke, Water and Explosions”, ACM Transactions on Graphics (TOG), 2005, Volume 24, issue 3, pages 910-914 discloses a vortex particle method in which a hybrid technique that makes synergistic use of Lagrangian vortex particles and Eulerian grid methods is used to model highly turbulent effects such as explosions and rough water. Vorticity confinement is used to model vorticity of fluids. In particular, a number of discrete elements of vorticity are introduced into a fluid to model eddies in the air and water. Similar to the method disclosed in the Bridson reference, the curl of the fluid field is used. However, instead of advecting units of fluid around the modeled space, units of vorticity are advected through space. A kernel function is used to define each unit of vorticity in the space, where the local vorticity magnitude goes from zero to one and back using a three-dimensional tent function near each vortex particle. The net vorticity at a point is the sum of contributions from all nearby particles. Such a field is differentiated to get a velocity field, which is then used to advect the vortex particles. However, this technique is too computationally intensive to be used in real-time applications.